﻿using System;
using System.Collections.Generic;

namespace LujHosting.Internal.Testing.RootDependencyCollectorTest2;

internal class Root1 { }

internal class Root2 {
  public Root2(Root1 dep1, R3Impl1 dep2) {
    _dep1 = dep1;
    _dep2 = dep2;
  }
  readonly Root1 _dep1;
  readonly R3Impl1 _dep2;
}

internal class Root3 {
  public Root3(IEnumerable<R3Interface> dep) {
    _dep = dep;
  }
  readonly IEnumerable<R3Interface> _dep;
}
internal interface R3Interface { }
internal class R3Impl1 : R3Interface { }
internal class R3Impl2 : R3Interface { }
internal class R3Impl3 {
  public static readonly Type INNER = typeof(Inner);
  class Inner : R3Interface { }
}

internal class Root4 {
  public Root4(Root4b dep) {
    _dep = dep;
  }
  readonly Root4b _dep;
}
internal class Root4b {
  public Root4b(Root4 dep1, Root4b dep2) {
    _dep1 = dep1;
    _dep2 = dep2;
  }
  readonly Root4 _dep1;
  readonly Root4b _dep2;
}

internal class Root5 {
  public Root5(IEnumerable<R5InterfA> dep) => _dep = dep;
  readonly IEnumerable<R5InterfA> _dep;
}
internal interface R5InterfA { }
internal class R5Impl1 : R5InterfA {
  public R5Impl1(IEnumerable<R5InterfB> dep) => _dep = dep;
  readonly IEnumerable<R5InterfB> _dep;
}
internal interface R5InterfB { }
internal class R5Impl2 : R5InterfB { }
